home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Dev / SpeakFreely_Src / gsm / src / gsm_print.c < prev    next >
C/C++ Source or Header  |  2000-05-27  |  5KB  |  168 lines

  1. /*
  2.  * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
  3.  * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
  4.  * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
  5.  */
  6.  
  7. /* $Header: /home/kbs/jutta/src/gsm/gsm-1.0/src/RCS/gsm_print.c,v 1.1 1992/10/28 00:15:50 jutta Exp $ */
  8.  
  9. #include    <stdio.h>
  10.  
  11. #include "private.h"
  12.  
  13. #include "gsm.h"
  14. #include "proto.h"
  15.  
  16. int gsm_print P3((f, s, c), FILE * f, gsm s, gsm_byte * c)
  17. {
  18.     word      LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4];
  19.  
  20.     /* GSM_MAGIC  = (*c >> 4) & 0xF; */
  21.  
  22.     if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1;
  23.  
  24.     LARc[0]  = (*c++ & 0xF) << 2;        /* 1 */
  25.     LARc[0] |= (*c >> 6) & 0x3;
  26.     LARc[1]  = *c++ & 0x3F;
  27.     LARc[2]  = (*c >> 3) & 0x1F;
  28.     LARc[3]  = (*c++ & 0x7) << 2;
  29.     LARc[3] |= (*c >> 6) & 0x3;
  30.     LARc[4]  = (*c >> 2) & 0xF;
  31.     LARc[5]  = (*c++ & 0x3) << 2;
  32.     LARc[5] |= (*c >> 6) & 0x3;
  33.     LARc[6]  = (*c >> 3) & 0x7;
  34.     LARc[7]  = *c++ & 0x7;
  35.  
  36.  
  37.     Nc[0]  = (*c >> 1) & 0x7F;
  38.     bc[0]  = (*c++ & 0x1) << 1;
  39.     bc[0] |= (*c >> 7) & 0x1;
  40.     Mc[0]  = (*c >> 5) & 0x3;
  41.     xmaxc[0]  = (*c++ & 0x1F) << 1;
  42.     xmaxc[0] |= (*c >> 7) & 0x1;
  43.     xmc[0]  = (*c >> 4) & 0x7;
  44.     xmc[1]  = (*c >> 1) & 0x7;
  45.     xmc[2]  = (*c++ & 0x1) << 2;
  46.     xmc[2] |= (*c >> 6) & 0x3;
  47.     xmc[3]  = (*c >> 3) & 0x7;
  48.     xmc[4]  = *c++ & 0x7;
  49.     xmc[5]  = (*c >> 5) & 0x7;
  50.     xmc[6]  = (*c >> 2) & 0x7;
  51.     xmc[7]  = (*c++ & 0x3) << 1;        /* 10 */
  52.     xmc[7] |= (*c >> 7) & 0x1;
  53.     xmc[8]  = (*c >> 4) & 0x7;
  54.     xmc[9]  = (*c >> 1) & 0x7;
  55.     xmc[10]  = (*c++ & 0x1) << 2;
  56.     xmc[10] |= (*c >> 6) & 0x3;
  57.     xmc[11]  = (*c >> 3) & 0x7;
  58.     xmc[12]  = *c++ & 0x7;
  59.  
  60.     Nc[1]  = (*c >> 1) & 0x7F;
  61.     bc[1]  = (*c++ & 0x1) << 1;
  62.     bc[1] |= (*c >> 7) & 0x1;
  63.     Mc[1]  = (*c >> 5) & 0x3;
  64.     xmaxc[1]  = (*c++ & 0x1F) << 1;
  65.     xmaxc[1] |= (*c >> 7) & 0x1;
  66.     xmc[13]  = (*c >> 4) & 0x7;
  67.     xmc[14]  = (*c >> 1) & 0x7;
  68.     xmc[15]  = (*c++ & 0x1) << 2;
  69.     xmc[15] |= (*c >> 6) & 0x3;
  70.     xmc[16]  = (*c >> 3) & 0x7;
  71.     xmc[17]  = *c++ & 0x7;
  72.     xmc[18]  = (*c >> 5) & 0x7;
  73.     xmc[19]  = (*c >> 2) & 0x7;
  74.     xmc[20]  = (*c++ & 0x3) << 1;
  75.     xmc[20] |= (*c >> 7) & 0x1;
  76.     xmc[21]  = (*c >> 4) & 0x7;
  77.     xmc[22]  = (*c >> 1) & 0x7;
  78.     xmc[23]  = (*c++ & 0x1) << 2;
  79.     xmc[23] |= (*c >> 6) & 0x3;
  80.     xmc[24]  = (*c >> 3) & 0x7;
  81.     xmc[25]  = *c++ & 0x7;
  82.  
  83.  
  84.     Nc[2]  = (*c >> 1) & 0x7F;
  85.     bc[2]  = (*c++ & 0x1) << 1;        /* 20 */
  86.     bc[2] |= (*c >> 7) & 0x1;
  87.     Mc[2]  = (*c >> 5) & 0x3;
  88.     xmaxc[2]  = (*c++ & 0x1F) << 1;
  89.     xmaxc[2] |= (*c >> 7) & 0x1;
  90.     xmc[26]  = (*c >> 4) & 0x7;
  91.     xmc[27]  = (*c >> 1) & 0x7;
  92.     xmc[28]  = (*c++ & 0x1) << 2;
  93.     xmc[28] |= (*c >> 6) & 0x3;
  94.     xmc[29]  = (*c >> 3) & 0x7;
  95.     xmc[30]  = *c++ & 0x7;
  96.     xmc[31]  = (*c >> 5) & 0x7;
  97.     xmc[32]  = (*c >> 2) & 0x7;
  98.     xmc[33]  = (*c++ & 0x3) << 1;
  99.     xmc[33] |= (*c >> 7) & 0x1;
  100.     xmc[34]  = (*c >> 4) & 0x7;
  101.     xmc[35]  = (*c >> 1) & 0x7;
  102.     xmc[36]  = (*c++ & 0x1) << 2;
  103.     xmc[36] |= (*c >> 6) & 0x3;
  104.     xmc[37]  = (*c >> 3) & 0x7;
  105.     xmc[38]  = *c++ & 0x7;
  106.  
  107.     Nc[3]  = (*c >> 1) & 0x7F;
  108.     bc[3]  = (*c++ & 0x1) << 1;
  109.     bc[3] |= (*c >> 7) & 0x1;
  110.     Mc[3]  = (*c >> 5) & 0x3;
  111.     xmaxc[3]  = (*c++ & 0x1F) << 1;
  112.     xmaxc[3] |= (*c >> 7) & 0x1;
  113.  
  114.     xmc[39]  = (*c >> 4) & 0x7;
  115.     xmc[40]  = (*c >> 1) & 0x7;
  116.     xmc[41]  = (*c++ & 0x1) << 2;
  117.     xmc[41] |= (*c >> 6) & 0x3;
  118.     xmc[42]  = (*c >> 3) & 0x7;
  119.     xmc[43]  = *c++ & 0x7;            /* 30  */
  120.     xmc[44]  = (*c >> 5) & 0x7;
  121.     xmc[45]  = (*c >> 2) & 0x7;
  122.     xmc[46]  = (*c++ & 0x3) << 1;
  123.     xmc[46] |= (*c >> 7) & 0x1;
  124.     xmc[47]  = (*c >> 4) & 0x7;
  125.     xmc[48]  = (*c >> 1) & 0x7;
  126.     xmc[49]  = (*c++ & 0x1) << 2;
  127.     xmc[49] |= (*c >> 6) & 0x3;
  128.     xmc[50]  = (*c >> 3) & 0x7;
  129.     xmc[51]  = *c & 0x7;            /* 33 */
  130.  
  131.     fprintf(f,
  132.           "LARc:\t%2.2d  %2.2d  %2.2d  %2.2d  %2.2d  %2.2d  %2.2d  %2.2d\n",
  133.            LARc[0],LARc[1],LARc[2],LARc[3],LARc[4],LARc[5],LARc[6],LARc[7]);
  134.  
  135.     fprintf(f, "#1:     Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",
  136.         Nc[0], bc[0], Mc[0], xmaxc[0]);
  137.     fprintf(f,
  138. "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
  139.         xmc[0],xmc[1],xmc[2],xmc[3],xmc[4],xmc[5],xmc[6],
  140.         xmc[7],xmc[8],xmc[9],xmc[10],xmc[11],xmc[12] );
  141.  
  142.     fprintf(f, "#2:     Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",
  143.         Nc[1], bc[1], Mc[1], xmaxc[1]);
  144.     fprintf(f,
  145. "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
  146.         xmc[13+0],xmc[13+1],xmc[13+2],xmc[13+3],xmc[13+4],xmc[13+5],
  147.         xmc[13+6], xmc[13+7],xmc[13+8],xmc[13+9],xmc[13+10],xmc[13+11],
  148.         xmc[13+12] );
  149.  
  150.     fprintf(f, "#3:     Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",
  151.         Nc[2], bc[2], Mc[2], xmaxc[2]);
  152.     fprintf(f,
  153. "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
  154.         xmc[26+0],xmc[26+1],xmc[26+2],xmc[26+3],xmc[26+4],xmc[26+5],
  155.         xmc[26+6], xmc[26+7],xmc[26+8],xmc[26+9],xmc[26+10],xmc[26+11],
  156.         xmc[26+12] );
  157.  
  158.     fprintf(f, "#4:     Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",
  159.         Nc[3], bc[3], Mc[3], xmaxc[3]);
  160.     fprintf(f,
  161. "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
  162.         xmc[39+0],xmc[39+1],xmc[39+2],xmc[39+3],xmc[39+4],xmc[39+5],
  163.         xmc[39+6], xmc[39+7],xmc[39+8],xmc[39+9],xmc[39+10],xmc[39+11],
  164.         xmc[39+12] );
  165.  
  166.     return 0;
  167. }
  168.